package main

import "fmt"

//#link:https://leetcode-cn.com/problems/decode-xored-array
//t。 利用异或，可以手动写一些。可以发现 1^1=0 0^2=2 2^3=1 便可得出公式
func main() {
	encoded := []int{6, 2, 7, 3}
	first := 4
	fmt.Println(decode(encoded, first))
}

//未知 整数数组 arr 由 n 个非负整数组成。
//经编码后变为长度为 n - 1 的另一个整数数组 encoded ，其中 encoded[i] = arr[i] XOR arr[i + 1] 。例如，arr = [1,0,2,1] 经编码后得到 encoded = [1,2,3] 。
//给你编码后的数组 encoded 和原数组 arr 的第一个元素 first（arr[0]）。
//请解码返回原数组 arr 。可以证明答案存在并且是唯一的。
//链接：https://leetcode-cn.com/problems/decode-xored-array
func decode(encoded []int, first int) []int {
	result := make([]int, 0)
	result = append(result, first)
	for _, value := range encoded {
		first ^= value
		result = append(result, first)
	}
	return result
}
